#ifndef PRESETMANAGER_H
#define PRESETMANAGER_H

#include <QString>
#include <QStringList>
#include <QDateTime>
#include <QJsonObject>
#include "processingsettings.h"

/**
 * 预设管理器 - 管理8个固定预设槽位
 * 
 * 简化设计：4个内置预设 + 4个用户预设槽位
 */
class PresetManager
{
public:
    // 预设槽位定义
    enum PresetSlot {
        NetworkShare = 0,    // 网络分享
        Standard = 1,        // 标准文档
        HighQuality = 2,     // 高清打印
        Commercial = 3,      // 商业出版
        MyPreset1 = 4,       // 我的预设1
        MyPreset2 = 5,       // 我的预设2
        MyPreset3 = 6,       // 我的预设3
        MyPreset4 = 7        // 我的预设4
    };
    
    // 获取所有预设名称
    static QStringList getAllPresetNames();
    static QString getPresetName(PresetSlot slot);
    static PresetSlot getPresetSlot(const QString& name);
    
    // 预设操作
    static ProcessingSettings getPreset(PresetSlot slot);
    static ProcessingSettings getPreset(const QString& name);
    static bool savePreset(PresetSlot slot, const ProcessingSettings& settings);
    static bool savePreset(const QString& name, const ProcessingSettings& settings);
    
    // 预设类型判断
    static bool isBuiltinPreset(PresetSlot slot);
    static bool isBuiltinPreset(const QString& name);
    static bool isUserPreset(PresetSlot slot);
    static bool isUserPreset(const QString& name);
    
private:
    static QJsonObject loadUserPresets();
    static bool saveUserPresets(const QJsonObject& presets);
};

#endif // PRESETMANAGER_H
